import axios from "axios";
import store from "@/store"

//创建一个axios实例
const request = axios.create({
  //目标:如果在开发环境下是"/dev-api1" 如果是在生产环境下"/prod-api1"
  // baseURL: process.env.NODE_ENV === "development" ? "/dev-api1" : "/prod-api1",
  baseURL: process.env.VUE_APP_API,
  timeout: 5000,
  headers: {},
});

//给当前的axios实例配置请求拦截器
request.interceptors.request.use((config) => {
  /* 
    进度条配置：
      - 如果想要在每次请求都要进度条，则在拦截器中配置
      - 如果想要路由切换的时候才有进度条,则在路由守卫中配置
  */

  config.headers.userTempId = store.state.User.userTempId;

  //携带vuex的token过来
  config.headers.token = store.state.User.token


  console.log(store.state.User.userTempId);
  return config;
});

//给当前的axios实例配置响应拦截器
request.interceptors.response.use(
  (response) => {
    /* 只要能进入当前响应拦截器，就说明请求是成功的，但是不一定是我们想要的信息，我们还要拿到返回的数据再次判断是否是我们想要的信息 */
    if (response.data.code !== 200 && response.data.code !== 20000) {
      //此时虽然请求成功，但是不是我们想要的，我们可以把错误直接展示
      alert(response.data.message);
      //因为error对象固定有一个message属性，所以我们在抛出自己的错误的时候,我们可以把错误封装到一个对象的message属性上,方便后续处理
      return Promise.reject({
        message: response.data.message
      });
    } else {
      return response.data.data;
    }
  },
  (error) => {
    return Promise.reject(error);
  }
);

//把当前的axios实例暴露出去
export default request;